package com.syf.kit.core.dao.mapper.registry;//package com.syf.core.dao.mapper.registry;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.ibatis.session.SqlSessionFactory;
//import tk.mybatis.mapper.mapperhelper.MapperHelper;
//
///**
// * 通用Mapper管理对象。
// *
// * 该类将application project将扫描basePackage下所有的包含@Table注解的BaseDTO的子类。然后通过ByteBuddy为这些BaseDTO子类
// * 生成通用Mapper，即SyfMapper。由此每个BaseDTO就有有一对一的SyfMapper。然后将这些SyfMapper注册至mybatis内，最终依靠MapperHelp
// * 完成通用mapper的注册。
// *
// * tk.mybatis.mapper的基本原理就是在，将原来mybatis已经存在的MappedStatement中的sql替换为根据Mapper泛型entity生成的各种sql.
// * tk.mybatis.mapper的源码跟踪就是 MapperHelper##processConfiguration
// * tk.mybatis.mapper的使用步骤就是创建：MapperHelper对象，注册所通用mapper，然后调用MapperHelper##processConfiguration
// * 将mybatis中所有“同msId”的MappedStatement的sql完成替换。
// *
// */
//@Slf4j
//public class SyfTKDtoMapperRegistry extends SyfAbstractDtoMapperRegistry<MapperHelper> {
//
//    /**
//     * @param scanPkg 扫描dto类的初始package
//     */
//    public SyfTKDtoMapperRegistry(String scanPkg) {
//        super(scanPkg);
//    }
//
//    @Override
//    public Class getBaseMapperType() {
//        return SyfTKMapper.class;
//    }
//
//    /**
//     * 初始化mapper，并加载使用.本类对象使用前，必须完成此方法调用
//     * @param sqlSessionFactory mybatis sqlSessionFactory
//     * @param mapperHelper 通用mapper的帮助器，辅助将定义的mapper注册生效
//     */
//    @Override
//    public void registerMapper(SqlSessionFactory sqlSessionFactory, MapperHelper mapperHelper) {
//        getAllMapperMap().entrySet().stream().forEach(entry -> {
//            sqlSessionFactory.getConfiguration().getMapperRegistry().addMapper(entry.getValue());
//            mapperHelper.registerMapper(entry.getValue());
//            if (log.isDebugEnabled()) {
//                log.debug("通用mapper:[{}]已经注册", entry.getValue().getTypeName());
//            }
//        });
//
//        mapperHelper.processConfiguration(sqlSessionFactory.getConfiguration());
//        log.info("通用mapper加载完毕，可以正常使用!");
//    }
//}
